#ifndef _SYS_MIME_TYPE_H_
#define _SYS_MIME_TYPE_H_

#include "FanObj.h"
#include "SysTypes.h"

#define MIME_TYPE_VTABLE(self)   ((MimeTypeVTable*)((FanObj*)self)->vtable)


extern Type*    MimeType_classType;
extern VTable*  MimeType_classVTable;


/* [sys::MimeType] Attributes */
struct MimeType
{
  FanObj        super;
};


/* [sys::MimeType] Virtual-table */
typedef struct MimeTypeVTable
{
  FanObjVTable  super;
} MimeTypeVTable;


/* [sys::MimeType] Methods and fields */
Bool            MimeType_equals(Obj self, NullableObj that);
Int             MimeType_hash(Obj self);
Str*            MimeType_toStr(Obj self);
MimeType*       MimeType_fromStr_1(Str* s);
MimeType*       MimeType_fromStr(Str* s, Bool checked);
Map*            MimeType_parseParams_1(Str* s);
Map*            MimeType_parseParams(Str* s, Bool checked);
MimeType*       MimeType_forExt(Str* ext);
Str*            MimeType_mediaType(MimeType* self);
Str*            MimeType_subType(MimeType* self);
Map*            MimeType_params(MimeType* self);
Charset*        MimeType_charset(MimeType* self);


/* [sys::MimeType] Extra methods */
MimeType*       MimeType_dir(void);


/* [sys::MimeType] Type-system functions */
Type*           MimeType_initType(void);
VTable*         MimeType_initVTable(void);
void            MimeType_initStatic(void);


#endif
